﻿using System;
using Acaweb.Model.Entities.DatosCompuestos;

namespace Acaweb.Model.Entities
{
    public class CursosMatriculados
    {
        private CursosMatriculadosPk _CursoMatriculadoPk;
        private double _Nota1;
        private double _Nota2;
        private double _Nota3;
        private double _Nota4;
        private double _Nota5;
        private DateTime _FechaMatricula;
        private double _NotaValidacion;
        private double _NotaPendiente;
        private Estudiantes _Estudiante;
        private Cursos _Curso;
        private double _NotaDefinitiva;

        public virtual CursosMatriculadosPk CursoMatriculadoPk
        {
            get { return _CursoMatriculadoPk; }
            set { _CursoMatriculadoPk = value; }
        }

        [NHibernate.Validator.Min(0)]
        [NHibernate.Validator.Max(6)]
        public virtual double Nota1
        {
            get { return _Nota1; }
            set { _Nota1 = value; }
        }

        [NHibernate.Validator.Min(0)]
        [NHibernate.Validator.Max(6)]
        public virtual double Nota2
        {
            get { return _Nota2; }
            set { _Nota2 = value; }
        }

        [NHibernate.Validator.Min(0)]
        [NHibernate.Validator.Max(6)]
        public virtual double Nota3
        {
            get { return _Nota3; }
            set { _Nota3 = value; }
        }

        [NHibernate.Validator.Min(0)]
        [NHibernate.Validator.Max(6)]
        public virtual double Nota4
        {
            get { return _Nota4; }
            set { _Nota4 = value; }
        }

        [NHibernate.Validator.Min(0)]
        [NHibernate.Validator.Max(6)]
        public virtual double Nota5
        {
            get { return _Nota5; }
            set { _Nota5 = value; }
        }

        public virtual DateTime FechaMatricula
        {
            get { return _FechaMatricula; }
            set { _FechaMatricula = value; }
        }

        public virtual double NotaValidacion
        {
            get { return _NotaValidacion; }
            set { _NotaValidacion = value; }
        }


        public virtual double NotaPendiente
        {
            get { return _NotaPendiente; }
            set { _NotaPendiente = value; }
        }

        public virtual Estudiantes Estudiante
        {
            get { return _Estudiante; }
            set { _Estudiante = value; }
        }

        public virtual Cursos Curso
        {
            get { return _Curso; }
            set { _Curso = value; }
        }

        public virtual double NotaDefinitiva
        {
            get
            {
                if (_NotaDefinitiva == 0)
                {
                    if (NotaValidacion == 0)
                    {
                        double NotaFinal = Nota1 * Curso.Porcentaje1 + Nota2 * Curso.Porcentaje2 +
                        Nota3 * Curso.Porcentaje3 + Nota4 * Curso.Porcentaje4 +
                        Nota5 * Curso.Porcentaje5;

                        NotaFinal /= 100;
                        _NotaDefinitiva = NotaFinal;
                        return _NotaDefinitiva;
                    }
                    else
                        return NotaValidacion;
                }
                else
                    return _NotaDefinitiva;
            }
            set { _NotaDefinitiva = value; }
        }
    }
}
